Technote 1157

Don't println to a Socket


ñ⁄éü

Ç®êSìñÇΩÇËÇÕ

println ÇÕóvíçà”

ä»íPÇ»âåàñ@

MMac OS è„Ç≈ìÆçÏÇ∑ÇÈÉNÉâÉCÉAÉìÉgÉTÅ[Éo Java ÉAÉvÉäÉPÅ[ÉVÉáÉìÇ™ÅAÉfÉbÉhÉçÉbÉNÇãNDZÇ∑ã§í ÇÃå¥àˆÇΔǵǃÅASocket Ç…ê⁄ë±Ç≥ÇÍÇΩ OutputStream Ç÷ÇÃèëÇ´çûÇ›Ç≈ println ÉÅÉ\ÉbÉhÇåÎópÇ∑ÇÈèÍçáǙdžÇËÇ‹Ç∑ÅBDZÇÍÇ©ÇÁÅAǪÇÃóùóRÇΔâåàçÙÇê‡ñæÇµÇ‹Ç∑ÅB



Ç®êSìñÇΩÇËÇÕ

HTTP Ç‚ FTP ǻǫÇÃÉCÉìÉ^Å[ÉlÉbÉgÇÃïWèÄÉvÉçÉgÉRÉãÇ‚ÅAìØÇ∂ÇÊǧDžçsÇäÓñ{ÇΔǵǃåêMÇçsǧêÍópÉvÉçÉgÉRÉãÇégǡǃÅAÉTÅ[ÉoÇΔÉlÉbÉgÉèÅ[ÉNí êMÇçsǧÉNÉâÉCÉAÉìÉgÉAÉvÉäÉPÅ[ÉVÉáÉìÇ‹ÇΩÇÕÉAÉvÉåÉbÉgÇçÏê¨ÇµÇΩÇΔǵNjÇ∑ÅBDZÇÃÉAÉvÉäÉPÅ[ÉVÉáÉìÇÕ Windows ÇΔ UNIX Ç≈ÇÕéxè·Ç»Ç≠ìÆçÏÇ∑ÇÈÇÃÇ…ÅAMac Ç≈é¿çsÇ∑ÇÈÇΔÅAÉTÅ[ÉoÇ©ÇÁÇÃâûìöÇéÛÇØéÊÇÈÇΔDZÇÎÇ≈ÉNÉâÉCÉAÉìÉgÇ™é~NjǡÇΩNjNjDžǻÇËÇ‹Ç∑ÅBÉTÅ[Éoë§Çí≤Ç◊ǃǛÇÈÇΔÅAì«é“ÇÃÉAÉvÉäÉPÅ[ÉVÉáÉìÇΔí êMÇ∑ÇÈÉTÅ[Éoë§ÇÃÉXÉåÉbÉhLJÅAÉNÉâÉCÉAÉìÉgÇ©ÇÁÇÃÉRÉ}ÉìÉhÇÃì«Ç›çûÇ›Ç≈ìØÇ∂ÇÊǧDžÉuÉçÉbÉNǵǃǢÇÈDZÇΔÇ™ÇÌÇ©ÇËÇ‹Ç∑ÅB

DZÇÍÇÕdžNjÇËÇÊÇ≠ÇÕímÇÁÇÍǃǢNjÇπÇÒÇ™ÅAJava ÉlÉbÉgÉèÅ[ÉLÉìÉOÇÃíËêŒÇ»ÇÃÇ≈Ç∑ (ÇÌÇÍÇÌÇÍÇÕëΩêîÇÃÉfÉxÉçÉbÉpÇ©ÇÁDZÇÃïÒçêÇéÛÇØÇƒÇ¢Ç‹Ç∑)ÅBé®Ç™í…ǢǩLJǵÇÍÇ‹ÇπÇÒÇ™ÅADZÇÍÇÕì«é“ÇÃÉAÉvÉäÉPÅ[ÉVÉáÉìÇÃÉoÉOÇ≈džǡǃÅAMRJ ÇÃÉoÉOÇ≈ÇÕdžÇËÇ‹ÇπÇÒÅBÇΩÇæÇ≥Ç¢ÇÌǢDžǵǃÅADZÇÍÇÕä»íPÇ…âÒîÇ≈Ç´Ç‹Ç∑ÅB

êÊì™ÉyÅ[ÉWÇ…ñflÇÈ


println ÇÕóvíçà”

å¥àˆÇΔǻǡǃǢÇÈñ‚ëËÇÕÅAçsÇãÊêÿÇÈï˚ñ@Ç…ÇÕï°êîÇÃàŸÇ»ÇÈï˚éÆÇ™Ç†ÇËÅADZÇÍÇ™ê≥ǵÇ≠ãÊï Ç≥ÇÍǃǢǻǢDZÇΔÇ≈Ç∑ÅBçsÇäÓñ{ÇΔÇ∑ÇÈÉCÉìÉ^Å[ÉlÉbÉgÉvÉçÉgÉRÉãÇÕÇŸÇΔÇÒÇ«ó·äOÇ»Ç≠çsññÉRÅ[ÉhÇΔǵǃ CRLFÅAǬNjÇËÅAASCII ÇÃïúãAï∂éö (Åu\rÅvÅA16 êiêîÇà 0D) ÇÃå„Ç…â¸çsï∂éö (Åu\nÅvÅA16 êiêîÇà 0A) Çë±ÇØÇΩLJÇÃÇégópǵǃǢNjÇ∑ÅBDZÇÃÇÊǧǻÉvÉçÉgÉRÉãÇÃÉRÉ}ÉìÉhëóêMÇ…ÇÕÅAJava ÇÃÇ∑ÇŒÇÁǵǢÉXÉgÉäÅ[ÉÄÉNÉâÉXåQÇópǢǃÅAPrintStream Ç‚ PrintWriter ÉIÉuÉWÉFÉNÉgÇ©ÇÁ println ÉÅÉ\ÉbÉhÇ≈ÉRÉ}ÉìÉhÇëóÇËÇΩÇ¢ÇΔévǧǩLJǵÇÍÇ‹ÇπÇÒÅBprintln ÇÕçsññÉRÅ[ÉhLJëóǡǃÇ≠ÇÍÇÈÇ©ÇÁÇ≈Ç∑ÅB

ñ‚ëËÇÕÅAprintln Ç™ÉtÉ@ÉCÉãÉXÉgÉäÅ[ÉÄå¸ÇØÇ…ê›åvÇ≥ÇÍǃǮÇËÅAí«â¡Ç∑ÇÈçsññÉRÅ[ÉhÇÕÉçÅ[ÉJÉãÉvÉâÉbÉgÉtÉHÅ[ÉÄÇÃLJÇÃÇæÇΔǢǧDZÇΔÇ≈Ç∑ÅBǪÇÍÇÕÅAWindows Ç»ÇÁ CRLFÅAUNIX Ç»ÇÁ LFÅAMac Ç»ÇÁ CR Ç≈Ç∑ÅB(ãÔëÃìIÇ»çsÇÃãÊêÿÇËï∂éöÇÕÉVÉXÉeÉÄÇà line.separator ÉvÉçÉpÉeÉBÇ©ÇÁì«Ç›çûÇ‹ÇÍÇ‹Ç∑ÅB) DZÇÃÇ‚ÇËï˚ÇÕÅAÉçÅ[ÉJÉãÉtÉ@ÉCÉãÇ…èëÇ´çûÇfiç€Ç…ÇÕê≥ǵǢï˚ñ@Ç≈Ç∑Ç™ÅAÉTÅ[ÉoÇΔí êMÇ∑ÇÈç€Ç…ÇÕñ‚ëËÇ™ãNDZÇËÇ‹Ç∑ÅB

åªè€ÇÕéüÇÃí ÇËÇ≈Ç∑ÅBÉNÉâÉCÉAÉìÉgÇ™éüÇÃåƒÇ—èoǵÇçsǢNjÇ∑ÅB

     out.println("HELO foo@bar.com");

MRJ Ç≈ìÆçÏǵǃǢÇÈèÍçáÅADZÇÍÇÕéüÇÃÉoÉCÉgóÒÇëóÇËÇ‹Ç∑ÅB

     HELO foo@bar.com\r

ÉTÅ[ÉoÇÕè„ãLÇÃÉeÉLÉXÉgÇΔ CR ÇéÛÇØéÊÇËÅACR ÇÃéüÇ… LF Ç™óàÇÈÇÃÇä˙ë“ǵǃÅAéüÇà 1 ï∂éöÇÃéÛêMÇë“ÇøÇ‹Ç∑ÅBÇΩǢǃǢÇÃÉTÅ[ÉoÇÕêÙó˚Ç≥ÇÍǃǮÇËÅACR ÇÃéüÇ…éÛÇØéÊÇ¡ÇΩï∂éöÇ™ LF Ç≈Ç»Ç≠ǃLJÅAïWèÄäOÇÃçsññÉRÅ[ÉhÇ™égÇÌÇÍǃǢÇÈÇΔîªífǵÅAǪÇÃï∂éöÇéüÇÃçsÇÃç≈èâÇÃï∂éöÇΔǵǃèàóùǵNjÇ∑ÅBǵǩǵÅAÇΔÇ…Ç©Ç≠Ç‹Ç∏ÅAÉTÅ[ÉoÇÕ CR ÇÃéüÇÃï∂éöÇ™óàǻǢÇΔÉRÉ}ÉìÉhÇÃèàóùÇ÷êiÇflÇ‹ÇπÇÒÅB

àÍï˚ÅAÉNÉâÉCÉAÉìÉgÇÕÉTÅ[ÉoÇ©ÇÁÇÃâûìöçsÇë“ÇøÅADZÇÍÇéÛêMǵǻǢÇΔéüÇÃÉeÉLÉXÉgÇÕëóêMǵNjÇπÇÒÅBóºï˚Ç™ InputStream.read ÇÃåƒÇ—èoǵÇ≈ÉuÉçÉbÉNÇ∑ÇÈìTå^ìIÇ»ÉfÉbÉhÉçÉbÉNÇ≈Ç∑ÅB

êÊì™ÉyÅ[ÉWÇ…ñflÇÈ


ä»íPÇ»âåàñ@

ê≥ǵǢï˚ñ@ÇÕÅAàÍíËÇÃçsãÊêÿÇËÇÃÉVÅ[ÉPÉìÉXÇê∂ê¨Ç∑ÇÈïKóvǙdžÇÈç€Ç…ÇÕ println ÇégópǵǻǢDZÇΔÇ≈Ç∑ÅBǪǧÇ≈ÇÕÇ»Ç≠é©ï™Ç≈çsǢNjÇ∑ÅBè„ÇÃÉTÉìÉvÉãÇéüÇÃÇÊǧDžèCê≥ǵNjǵÇÂǧÅB

     out.print("HELO foo@bar.com\r\n");

DZÇÍÇÕîÒèÌÇ…ä»íPǻDZÇΔÇ≈Ç∑Ç™ÅAécîOǻǙÇÁÅAÉRÅ[ÉhíÜÇÃÇ∑Ç◊ǃÇà println åƒÇ—èoǵÇïœçXÇµÇ»ÇØÇÍnjǻÇËÇ‹ÇπÇÒÅB

Ç∑ÇŒÇÁǵǢǙǧNjÇ≠ÇÕǢǩǻǢâåàçÙ

îÒèÌÇ…óDÇÍǃǢÇÈÇÃÇ…écîOǻǙÇÁégǶǻǢâåàçÙǙdžÇËÇ‹Ç∑ÅBjava.awt.PrintStream Ç®ÇÊÇ— java.awt.PrintWriter ÉNÉâÉXÇÃÉ\Å[ÉXÇå©ÇÈÇΔÅADZÇÍÇÁÇÃÉNÉâÉXÇÕ newLine ÉÅÉ\ÉbÉhÇégǡǃçsññÉRÅ[ÉhÇÃëóêMÇçsǡǃǢÇÈDZÇΔÇ™ÇÌÇ©ÇÈÇ≈ǵÇÂǧÅBPrintStream Ç‹ÇΩÇÕ PrintWriter ÇÃìΔé©ÉTÉuÉNÉâÉXÇçÏê¨ÇµÇƒÅAnewLine ÇÉIÅ[ÉoÉâÉCÉhǵǃñæé¶ìIÇ… CRLF ÇëóêMÇ∑ÇÈÇÃÇ™îÒèÌÇ…êÙó˚Ç≥ÇÍÇΩÇ‚ÇËï˚Ç≈Ç∑ÅBǵǩǵÅAécîOǻǙÇÁÅAç±ç◊Ç»ê›åvÉ~ÉXÇÃÇΩÇflÅinewLine ÉÅÉ\ÉbÉhÇÕ private DžǻǡǃǢǃÅAprotected Ç≈ÇÕdžÇËÇ‹ÇπÇÒÅjÅAÉIÅ[ÉoÉâÉCÉhÇ™Ç≈ǴǻǢÇÃÇ≈Ç∑ÅBñ{ìñÇ…écîOÇ≈Ç∑ÅB

ÉTÅ[Éoë§Ç≈ÇÃèCê≥

ì«é“Ç™ìØéûÇ…ÉTÅ[ÉoÇÃäJî≠LJçsǡǃǮÇËÅAÉTÅ[Éoë§ÇÃÉRÅ[ÉhLJïœçXÇ≈Ç´ÇÈèÍçáÇÕÅAÉNÉâÉCÉAÉìÉgë§ÇïœçXÇ∑ÇÈÇÊÇËÅAÉTÅ[Éoë§Ç≈çsǶÇÈÇ∏Ç¡ÇΔÇÊÇ¢èCê≥ï˚ñ@ǙdžÇËÇ‹Ç∑ÅBè„ãLÇ≈ÅAÉTÅ[ÉoÇ™ CR Ç…ë±Ç≠ï∂éöÇë“ǡǃÅALF ǩǫǧǩÇîªífÇ∑ÇÈÇΩÇflÇ…ÉuÉçÉbÉNÇ∑ÇÈï˚ñ@Çê‡ñæÇµÇ‹ÇµÇΩÅBïWèÄäOÇÃçsññÉRÅ[ÉhÇèàóùÇ∑ÇÈLJǡÇΔêÙó˚ìxÇÃçÇÇ¢ï˚ñ@ÇÕÅAÉTÅ[ÉoÇ™ CR ÇéÛÇØéÊÇ¡ÇΩÇÁë¶ç¿Ç…ì¸óÕçsÇèàóùǵÅALJǵéüÇ…éÛÇØéÊÇÈï∂éöÇ™ LF Ç»ÇÁǪÇÍÇñ≥éãÇ∑ÇÈDZÇΔÇéwé¶Ç∑ÇÈÉtÉâÉOÇê›íËǵǃǮÇ≠ÇÃÇ≈Ç∑ÅB

DZÇÃï˚ñ@Ç…ÇÊÇËÅAÉTÅ[ÉoÇÕ CR ÇéÛÇØéÊÇ¡ÇΩå„ÉuÉçÉbÉNÇπÇ∏ÅAÉRÉ}ÉìÉhÇèàóùǵâûìöÇ≈Ç´ÇÈÇÊǧDžǻÇËÇ‹Ç∑ÅBÉNÉâÉCÉAÉìÉgÉRÅ[ÉhÇÕâûìöÇéÛÇØéÊÇËé¿çsÇë±ÇØÇÈDZÇΔÇ™Ç≈Ç´ÇÈÇΩÇflÅAÉfÉbÉhÉçÉbÉNÇÕãNDZÇËÇ‹ÇπÇÒÅB

êÊì™ÉyÅ[ÉWÇ…ñflÇÈ